<?php

require_once 'abstract.const.php';

abstract class db extends constants {
	
	protected $db = NULL;
	protected $res;
	protected $rows;
	protected $numrows;
	private $query = '';
	private $property = array();
	
	
	/* Parametri di connessione al database MYSQL 
	 * */
	private $host = 'localhost';
	private $port = ':3306';
	private $user = 'root';
	private $pass = '';
	private $database = 'gdr-project';
	
	/* Medoto che apre la connessione al database con i parametri riportati sopra
	 * */
	protected function open() {
		$this -> db = mysql_connect($this -> host . $this -> port, $this -> user, $this -> pass) or die('<div id="error_mysql_connect">
			<h2>Errore di connessione al <em>database</em></h2>
			<p>Controllare di aver inserito i parametri correttamente nel file "<em>class/abstract.db.php</em>"</p>
			</div>');
			
		mysql_select_db($this -> database) or die('<div id="error_mysql_selectdb">
			<h2>Errore di connessione al <em>database</em></h2>
			<p>Controllare di aver inserito il nome del database correttamente nel file "<em>class/abstract.db.php</em>"</p>
			</div>');
			
	}
	
	/* Metodo che chiude la connessione al database
	 * */
	protected function close() 
	{
		mysql_close($this -> db);
	}
	
	/* Una volta aperta la connessione è possibile lanciare una query.
	 * Nel caso in cui la query restituisca un valore booleano allora 
	 * verrà chiusa automaticamente la connessione al database, 
	 * nel caso contrario verrà restituito il numero di risultati 
	 * e la connessione al database lasciata aperta per un possibile fetch
	 */
	protected function query($q = '')
	{
		if($q != '')
		{
			$this -> query = $q;
			$this -> res = mysql_query($q);
				
			if(is_bool($this -> res))
			{
				$this -> close();
					return $this;
			} else {
				$this -> numrows = mysql_num_rows($this -> res);
					return $this;
			}
				
		} else {
			return FALSE;
		}
	}
	
	/* Metodo che permette di estrarre i risultati dal database e restetuendo gli stessi
	 * i dati solitamente sono conetenuti in un array con l'associazione field => value 
	 */
	protected function fetch()
	{
		if($this -> numrows > 0)
		{
			return mysql_fetch_assoc($this -> res);
		} else {
			return FALSE;
		}
		
		$this -> close();
	}
	
	protected function data_crypt($str) 
	{
		if( ! empty($str))
		{
			return sha1(trim($str));
		} else {
			return $str;
		}
	}
	
	protected function getData()
	{
		return $this -> property;
	}
	
	protected function setData($query)
	{
		$this -> query($query);
	
		while($rd = $this -> fetch())
		{
			$this -> property[] = $rd;
		}
		return $this;
	}
	
	protected function getAction($query)
	{
		
		$this -> query($query);
		
		return $this;
	}
		
}


?>